今天來撰寫新增留言。
我們要新增資料庫,用來放留言,一樣到xampp的mysql中控制,新增資料表,命名為messageboard,如圖所示
除了每個名稱、型態和長度/值外,特別提下,第一個id後面的A_I那邊要打勾。
A_I英文全名為AUTO_INCREMENT,中文為自動遞增,id留言的代碼,自動遞增能讓我們有效區別並節省撰寫出新的程式碼。
剩下的name是留言者名稱,comment是留言。
Home.php程式碼
<!DOCTYPE html>
<html lang="en">
<?php
include("../php/datatable.php");
?>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-wEmeIV1mKuiNpC+IOBjI7aAzPcEZeedi5yW5f2yOq55WWLwNGmvvx4Um1vskeMj0" crossorigin="anonymous">
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0/dist/js/bootstrap.bundle.min.js" integrity="sha384-p34f1UUtsS3wqzfto5wAAmdvj+osOnFyQFpp4Ua3gs/ZVWx6oOypYoCJhGGScy+8" crossorigin="anonymous"></script>
<title>留言板</title>
</head>
<body>....
body後面的我就省略,和昨天一樣。
create_comment.php程式碼
<?php
include("datatable.php");
$name = $_POST["user_name"];
$comment = $_POST['comment'];
$statement = createComment($name, $comment);
header('Location:/30days/message_board/screen/Home.php');
createComment是從datatable.php來的。
datatable.php程式碼
function createComment($name, $comment)
{
$db = dbConnect();
$statement = $db->prepare("INSERT INTO messageboard(name,comment) VALUES(?,?)");
$statement->execute([$name, $comment]);
return $statement;
}
VALUES(?,?)
這裡第一個?放入的是$name,也是$_POST["user_name"];
這裡第二個?放入的是$comment,也是$_POST['comment'];
prepare用意補充
prepare是用來防止其他人攻擊你的資料庫,也就是叫做SQL注入攻擊(SQL injection)。
透過預先轉換參數來防範此種攻擊,未來某天或許能講講SQL注入攻擊(SQL injection)。
提醒下,新增留言的結果要到messageboard資料表上看,我們明後天才會做出呈現留言的畫面和後端。